<html>
    <head>
        <title>AuditLogObject 审计日志对象  </title>
    </head>
    <body>
        <script>
            /*
                        十、审计日志对象  AuditLogObject

                                默认情况下，为每个Web请求创建一个"审计日志对象"。

                                审计日志对象可以由以下关系图表示：
                                                    
                                        AuditLogInfo     包含：

                                                 AuditLogActionInfo     EntityChageInfo        Exception  Comment  

                                                                         包含：
                                                                         EntityChageInfo

                                1、AuditLogInfo 具有以下属性的根对象：
                                        
                                        1、ApplicationName： 当你将不同应用程序的审计日志保存到同一个数据库时，此属性用于区分应用程序的日志。

                                        2、UserId ：当前用户的ID，如果用户已登录。

                                        3、UserName：  当前用户的用户名，如果用户已登录（此值在这里不依赖于身份模块/系统进行查找）。

                                        4、TenantId：  当前租户的ID，用于多租户应用程序。

                                        5、TenantName： 当前租户的名称，用于多租户应用程序。

                                        6、ExecutionTime：创建此审计日志对象的时间。

                                        7、ExecutionDuration： 请求的总执行持续时间，以毫秒为单位。这可用于观察应用程序的性能

                                        8、ClientId： 当前客户端的ID，如果客户端已通过身份验证。客户端通常是通过HTTP API使用系统的第3方应用程序。

                                        9、ClientName：当前客户端的名称（如果可用）。

                                        10、ClientIpAddress：客户端/用户设备的IP地址。

                                        11、CorrelationId： 当前相关性ID。相关ID用于在单个逻辑操作中关联不同应用程序（或微服务）写入的审计日志。

                                        12、BrowserInfo：当前用户的浏览器名称/版本信息（如果可用）。

                                        13、HttpMethod： 当前请求的HTTP方法（GET、POST、PUT、DELETE…等）。

                                        14、HttpStatusCode：此请求的HTTP响应状态代码。

                                        15、Url:请求的URL。

                                2、AuditLogActionInfo:  
                                        审计日志操作通常是Web请求期间的控制器操作（Action） 或 应用程序服务方法调用。

                                        一个审计日志可能包含多个操作.

                                        操作对象具有以下属性：

                                                    1、ServiceName： 执行的控制器/服务的名称。

                                                    2、MethodName： 控制器/服务的执行方法的名称。

                                                    3、Parameters： JSON格式的文本，表示传递给方法的参数。

                                                    4、ExecutionTime：执行测方法的时间。

                                                    5、ExecutionDuration：  方法执行的持续时间，以毫秒为单位。这可以用来观察方法的性能。

                                3、EntityChangeInfo：
                                         表示此Web请求中实体的更改。审计日志可能包含零个或多个实体更改。
                                         实体更改具有以下属性：

                                                    1、ChangeTime：更改实体的时间。

                                                    2、ChangeType： 具有以下字段的枚举：Created（0）、Updated（1）和Deleted（2）。

                                                    3、EntityId： 已更改的实体ID

                                                    4、EntityTenantId： 该实体所属租户的ID

                                                    5、EntityTypeFullName：  键入具有完整命名空间的实体的（类）名称（如Book实体的Acme.BookStore.Book）。

                                4、EntityPropertyChangeInfo：
                                        表示实体属性的更改。
                                        实体更改信息可能包含具有以下属性的一个或者多个属性更改：

                                                    1、NewValue：属性的新值。如果实体被删除，则为null。

                                                    2、OriginalValue：更改前的旧/原始值。如果实体是新创建的，则为null。

                                                    3、PropertyName：实体类上的属性名称。

                                                    PropertyTypeFullName：键入具有完整命名空间的属性的（类）名称。

                                5、Exception：
                                          异常：审计日志对象可能包含零个或多个异常。通过这种方式，你可以获得失败请求的报告。
                                          
                                6、Comment：将自定义消息添加到审计日志条目的任意字符串值。审计日志对象可能包含零个或多个注释。
                                          
                                  
                                
                                除了上面解释的标准属性之外，AuditLogInfo、AuditLogActionInfo和EntityChangeInfo对象实现了IHasExtraProperties接口，因此你可以向这些对象添加自定义属性。
                    */
        </script>
    </body>
</html>